package net.csdn.business.discuss.api.enums;

import lombok.AllArgsConstructor;
import lombok.Getter;
import org.apache.commons.lang3.ObjectUtils;

/**
 * @ClassName DiscussActionEventEnum
 * @Description discuss 操作事件 code < 0 暂不作为change事件入库
 * @Author zhangyl
 * @Date 2023/7/22 10:18
 */
@Getter
@AllArgsConstructor
public enum DiscussActionEventEnum {
    /**
     * 创建discuss
     */
    CREATE_DISCUSS("create_discuss", 0),

    /**
     * 更新discuss
     */
    UPDATE_DISCUSS("update_discuss", 1),

    /**
     * 评论discuss
     */
    CREATE_COMMENT("comment", 2),

    /**
     * 评论discuss
     */
    UPDATE_COMMENT("update_comment", 3),

    /**
     * 回复讨论评论
     */
    CREATE_REPLY("create_reply", 4),
    /**
     * 更新讨论回复
     */
    UPDATE_REPLY("update_reply", 5),

    /**
     * 关闭discuss
     */
    CLOSE("close", 6),
    /**
     * 打开discuss
     */
    OPEN("open", 7),
    /**
     * 置顶discuss
     */
    PIN("pin", 8),
    /**
     * 取消置顶discuss
     */
    UN_PIN("un_pin", 9),
    /**
     * 分类中置顶discuss
     */
    PIN_CATEGORY("pin_category", 10),

    /**
     * 分类中置顶discuss
     */
    UN_PIN_CATEGORY("un_pin_category", 11),

    /**
     * 锁定discuss
     */
    LOCK("lock", 12),
    /**
     * 解锁discuss
     */
    UN_LOCK("un_lock", 13),
    /**
     * 转移discuss
     */
    TRANSFER("transfer", 14),
    /**
     * 从dicuss创建issue
     */
    CREATE_ISSUE("createIssue", 15),
    /**
     * 投票discuss
     */
    VOTE_DISCUSS("voteDiscuss", 16),

    /**
     * 艾特相关人员
     */
    COMMENT_AT("commentAt", -1),
    ;
    private final String action;

    private final Integer code;

    public static DiscussActionEventEnum ofCode(Integer code) {
        if (ObjectUtils.isEmpty(code)) {
            return null;
        }
        for (DiscussActionEventEnum event : DiscussActionEventEnum.values()) {
            if (event.code.equals(code)) {
                return event;
            }
        }
        throw new IllegalArgumentException("IssueActionEventEnum param error");
    }
}